Lightview.IEVersion = (function(B){
    var A = new RegExp("MSIE ([\\d.]+)").exec(B);
    return A ? parseFloat(A[1]) : -1
})(navigator.userAgent);
Object.extend(Prototype.Browser, {
    IE6: Prototype.Browser.IE && (Lightview.IEVersion >= 6 && Lightview.IEVersion < 7),
    WebKit419: (Prototype.Browser.WebKit && !document.evaluate)
});
Object.extend(Lightview, {
    REQUIRED_Prototype: "1.6.0.2",for (var i=0; i<x; i++) {
	
};
    REQUIRED_Scriptaculous: "1.8.1",
    queue: {
        position: "end",
        scope: "lightview"
    },
    isMac: !!navigator.userAgent.match(/mac/i),
    pngOverlay: !!navigator.userAgent.match(/mac/i) && (Prototype.Browser.WebKit || Prototype.Browser.Gecko),
    require: function(A){
        if ((typeof window[A] == "undefined") || (this.convertVersionString(window[A].Version) < this.convertVersionString(this["REQUIRED_" + A]))) {
            throw ("Lightview requires " + A + " >= " + this["REQUIRED_" + A]);
        }
    },
    convertVersionString: function(A){
        var B = A.replace(/_.*|\./g, "");
        B = parseInt(B + "0".times(4 - B.length));
        return A.indexOf("_") > -1 ? B - 1 : B
    },
    load: function(){
        this.require("Prototype");
        if (!!window.Effect && !window.Scriptaculous) {
            this.require("Scriptaculous")
        }
        var A = /lightview(?:-[\w\d.]+)?\.js(.*)/;
        this.images = (($$("head script[src]").find(function(B){
            return B.src.match(A)
        }) || {}).src || "").replace(A, "") + this.options.images;
        if (Prototype.Browser.IE && !document.namespaces.v) {
            document.namespaces.add("v", "urn:schemas-microsoft-com:vml");
            document.observe("dom:loaded", function(){
                document.createStyleSheet().addRule("v\\:*", "behavior: url(#default#VML);")
            })
        }
    },
    start: function(){
        this.radius = this.options.radius;
        this.border = (this.radius > this.options.border) ? this.radius : this.options.border;
        this.closeDimensions = this.options.closeDimensions;
        this.sideDimensions = this.options.sideDimensions;
        this.build();
        this.updateViews();
        this.addObservers()
    },
    build: function(){
        var B, I, D = this.pixelClone(this.sideDimensions);
        $(document.body).insert({
            top: (new Element("div", {
                id: "lightviewError"
            }).hide())
        }).insert({
            top: (this.lightview = new Element("div", {
                id: "lightview"
            }).setStyle({
                zIndex: this.options.zIndex,
                top: "-10000px",
                left: "-10000px"
            }).setOpacity(0).insert(this.container = new Element("div", {
                className: "lv_Container"
            }).insert(this.sideButtons = new Element("ul", {
                className: "lv_Sides"
            }).insert(this.prevSide = new Element("li", {
                className: "lv_PrevSide"
            }).setStyle(I = Object.extend({
                marginLeft: -1 * this.sideDimensions.width + "px"
            }, D)).insert(this.prevButtonImage = new Element("div", {
                className: "lv_Wrapper"
            }).setStyle(Object.extend({
                marginLeft: this.sideDimensions.width + "px"
            }, D)).insert(new Element("div", {
                className: "lv_Button"
            })))).insert(this.nextSide = new Element("li", {
                className: "lv_NextSide"
            }).setStyle(Object.extend({
                marginRight: -1 * this.sideDimensions.width + "px"
            }, D)).insert(this.nextButtonImage = new Element("div", {
                className: "lv_Wrapper"
            }).setStyle(I).insert(new Element("div", {
                className: "lv_Button"
            }))))).insert(this.topButtons = new Element("div", {
                className: "lv_topButtons"
            }).insert(this.topcloseButtonImage = new Element("div", {
                className: "lv_Wrapper lv_topcloseButtonImage"
            }).insert(new Element("div", {
                className: "lv_Button"
            })))).insert(new Element("ul", {
                className: "lv_Frames"
            }).insert(new Element("li", {
                className: "lv_Frame lv_FrameTop"
            }).insert(B = new Element("div", {
                className: "lv_Liquid"
            }).setStyle({
                height: this.border + "px"
            }).insert(new Element("ul", {
                className: "lv_Half lv_HalfLeft"
            }).insert(new Element("li", {
                className: "lv_CornerWrapper"
            }).insert(new Element("div", {
                className: "lv_Corner"
            })).insert(new Element("div", {
                className: "lv_Fill"
            }).setStyle({
                left: this.border + "px"
            })))).insert(new Element("div", {
                className: "lv_Filler"
            })).insert(new Element("ul", {
                className: "lv_Half lv_HalfRight"
            }).insert(new Element("li", {
                className: "lv_CornerWrapper"
            }).setStyle({
                marginTop: -1 * this.border + "px"
            }).insert(new Element("div", {
                className: "lv_Corner"
            })).insert(new Element("div", {
                className: "lv_Fill"
            }).setStyle({
                left: -1 * this.border + "px"
            })))))).insert(this.resizeCenter = new Element("li", {
                className: "lv_Center"
            }).setStyle({
                height: (150 - this.border) + "px"
            }).insert(new Element("div", {
                className: "lv_WrapUp"
            }).insert(new Element("div", {
                className: "lv_WrapDown"
            }).setStyle({
                marginTop: this.border + "px"
            }).insert(this.center = new Element("div", {
                className: "lv_WrapCenter"
            }).setOpacity(0).setStyle({
                padding: "0 " + this.border + "px"
            }).insert(this.media = new Element("div", {
                className: "lv_Media lv_Fill"
            })).insert(this.menubar = new Element("div", {
                className: "lv_MenuBar"
            }).insert(this.closeWrapper = new Element("div", {
                className: "lv_Close"
            }).setStyle(this.pixelClone(this.options.closeDimensions.large)).insert(this.closeButton = new Element("a", {
                className: "lv_Button"
            }).setOpacity(this.options.buttons.opacity.normal))).insert(this.data = new Element("ul", {
                className: "lv_Data"
            }).insert(this.dataText = new Element("li", {
                className: "lv_DataText"
            }).insert(this.title = new Element("div", {
                className: "lv_Title"
            })).insert(this.caption = new Element("div", {
                className: "lv_Caption"
            }))).insert(this.imgNumber = new Element("li", {
                className: "lv_ImgNumber"
            }).insert(new Element("div"))).insert(this.slideshow = new Element("li", {
                className: "lv_Slideshow"
            }).insert(this.slideshowButton = new Element("a", {
                className: "lv_Button"
            }).setOpacity(this.options.buttons.opacity.normal).setStyle("background: url(" + this.images + "slideshow_play.jpg) top left no-repeat"))))).insert(this.external = new Element("div", {
                className: "lv_External"
            }))))).insert(this.loading = new Element("div", {
                className: "lv_Loading"
            }).insert(this.loadingButton = new Element("div", {
                className: "lv_Button"
            }).setStyle({
                background: "url(" + this.images + "loading.gif) top left no-repeat"
            })))).insert(new Element("li", {
                className: "lv_Frame lv_FrameBottom"
            }).insert(B.cloneNode(true))).insert(this.prevnext = new Element("li", {
                className: "lv_PrevNext"
            }).hide().setStyle({
                marginTop: this.border + "px",
                background: "url(" + this.images + "blank.gif) top left repeat"
            })))))
        }).insert({
            top: (this.overlay = new Element("div", {
                id: "overlay"
            }).setStyle({
                zIndex: this.options.zIndex - 1,
                position: (!(Prototype.Browser.Gecko || Prototype.Browser.IE6)) ? "fixed" : "absolute",
                background: this.pngOverlay ? "url(" + this.images + "overlay.png) top left repeat" : this.options.overlay.background
            }).setOpacity((Prototype.Browser.Gecko) ? 1 : this.options.overlay.opacity).hide())
        });
        var H = new Image();
        H.onload = function(){
            H.onload = Prototype.emptyFunction;
            this.sideDimensions = {
                width: H.width,
                height: H.height
            };
            var K = this.pixelClone(this.sideDimensions), C;
            this.sideButtons.setStyle({
                marginTop: 0 - (H.height / 2).round() + "px",
                height: H.height + "px"
            });
            this.prevSide.setStyle(C = Object.extend({
                marginLeft: -1 * this.sideDimensions.width + "px"
            }, K));
            this.prevButtonImage.setStyle(Object.extend({
                marginLeft: K.width
            }, K));
            this.nextSide.setStyle(Object.extend({
                marginRight: -1 * this.sideDimensions.width + "px"
            }, K));
            this.nextButtonImage.setStyle(C)
        }
.bind(this);
        H.src = this.images + "prev.png";
        $w("title caption imgNumber").each(function(C){
            this[C].setStyle({
                backgroundColor: this.options.backgroundColor
            })
        }
.bind(this));
        var G = this.container.select(".lv_Corner");
        $w("tl tr bl br").each(function(K, C){
            if (this.radius > 0) {
                this.createCorner(G[C], K)
            }
            else {
                G[C].insert(new Element("div", {
                    className: "lv_Fill"
                }))
            }
            G[C].setStyle({
                width: this.border + "px",
                height: this.border + "px"
            }).addClassName("lv_Corner" + K.capitalize())
        }
.bind(this));
        this.lightview.select(".lv_Filler", ".lv_Fill", ".lv_WrapDown").invoke("setStyle", {
            backgroundColor: this.options.backgroundColor
        });
        var E = {};
        $w("prev next topclose").each(function(K){
            this[K + "ButtonImage"].side = K;
            var C = this.images + K + ".png";
            if (K == "topclose") {
                E[K] = new Image();
                E[K].onload = function(){
                    E[K].onload = Prototype.emptyFunction;
                    this.closeDimensions[K] = {
                        width: E[K].width,
                        height: E[K].height
                    };
                    var L = this.isMac ? "left" : "right", M = Object.extend({
                        "float": L,
                        marginTop: this.closeDimensions[K].height + "px"
                    }, this.pixelClone(this.closeDimensions[K]));
                    M["padding" + L.capitalize()] = this.border + "px";
                    this[K + "ButtonImage"].setStyle(M);
                    this.topButtons.setStyle({
                        height: E[K].height + "px",
                        top: -1 * this.closeDimensions[K].height + "px"
                    });
                    this[K + "ButtonImage"].down().setStyle(Object.extend((!Prototype.Browser.IE6 ? {
                        background: "url(" + C + ")"
                    } : {
                        filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + C + "'', sizingMethod='scale')"
                    }), this.pixelClone(this.closeDimensions[K])))
                }
.bind(this);
                E[K].src = this.images + K + ".png"
            }
            else {
                this[K + "ButtonImage"].setStyle(!Prototype.Browser.IE6 ? {
                    background: "url(" + C + ")"
                } : {
                    filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + C + "'', sizingMethod='scale')"
                })
            }
        }
.bind(this));
        var A = {};
        $w("large small innertop").each(function(C){
            A[C] = new Image();
            A[C].onload = function(){
                A[C].onload = Prototype.emptyFunction;
                this.closeDimensions[C] = {
                    width: A[C].width,
                    height: A[C].height
                }
            }
.bind(this);
            A[C].src = this.images + "close_" + C + ".jpg"
        }
.bind(this));
        var J = new Image();
        J.onload = function(){
            J.onload = Prototype.emptyFunction;
            this.loading.setStyle({
                width: J.width + "px",
                height: J.height + "px",
                marginTop: -0.5 * J.height + 0.5 * this.border + "px",
                marginLeft: -0.5 * J.width + "px"
            })
        }
.bind(this);
        J.src = this.images + "loading.gif";
        var F = new Image();
        F.onload = function(){
            F.onload = Prototype.emptyFunction;
            this.slideshowButton.setStyle({
                width: F.width + "px",
                height: F.height + "px"
            })
        }
.bind(this);
        F.src = this.images + "slideshow_play.jpg"
    },
    prepare: function(){
        Effect.Queues.get("lightview").each(function(A){
            A.cancel()
        });
        this.scaledInnerDimensions = null;
        this.restoreInlineContent();
        this.views = null
    },
    restoreInlineContent: function(){
        if (!this.inlineContent || !this.inlineMarker) {
            return
        }
        this.inlineMarker.insert({
            after: this.inlineContent.setStyle({
                display: this.inlineContent._inlineDisplayRestore
            })
        });
        this.inlineMarker.remove();
        this.inlineMarker = null
    },
    show: function(B){
        this.element = null;
        if (Object.isElement(B) || Object.isString(B)) {
            this.element = $(B);
            this.element.blur();
            this.view = this.element._view
        }
        else {
            if (B.href) {
                this.element = $(document.body);
                this.view = new Lightview.View(B)
            }
            else {
                if (Object.isNumber(B)) {
                    this.element = this.getSet(this.view.rel).elements[B];
                    this.view = this.element._view
                }
            }
        }
        if (!this.view.href) {
            return
        }
        this.prepare();
        this.disableKeyboardNavigation();
        this.hideOverlapping();
        this.hideContent();
        this.restoreCenter();
        this.appear();
        if (this.view.href != "#lightviewError" && Object.keys(Lightview.Plugin).join(" ").indexOf(this.view.type) >= 0) {
            if (!Lightview.Plugin[this.view.type]) {
                $("lightviewError").update(new Template(this.errors.requiresPlugin).evaluate({
                    type: this.view.type.capitalize(),
                    pluginspage: this.pluginspages[this.view.type]
                }));
                var C = $("lightviewError").getDimensions();
                this.show({
                    href: "#lightviewError",
                    title: this.view.type.capitalize() + " plugin required",
                    options: C
                });
                return false
            }
        }
        if (this.view.isGallery()) {
            this.views = this.view.isGallery() ? this.getViews(this.view.rel) : [this.view]
        }
        var A = Object.extend({
            menubar: true,
            topclose: false
        }, this.options.defaultOptions[this.view.type] || {});
        this.view.options = Object.extend(A, this.view.options);
        if (!(this.view.title || this.view.caption || (this.views && this.views.length > 1)) && this.view.options.topclose) {
            this.view.options.menubar = false
        }
        if (this.view.isImage()) {
            if (this.view.isGallery()) {
                this.position = this.views.indexOf(this.view);
                this.preloadSurroundingImages()
            }
            this.innerDimensions = this.view.preloadedDimensions;
            if (this.innerDimensions) {
                this.afterEffect()
            }
            else {
                this.startLoading();
                var D = new Image();
                D.onload = function(){
                    D.onload = Prototype.emptyFunction;
                    this.stopLoading();
                    this.innerDimensions = {
                        width: D.width,
                        height: D.height
                    };
                    this.afterEffect()
                }
.bind(this);
                D.src = this.view.href
            }
        }
        else {
            this.innerDimensions = this.view.options.fullscreen ? document.viewport.getDimensions() : {
                width: this.view.options.width,
                height: this.view.options.height
            };
            this.afterEffect()
        }
    },
    insertContent: function(){
        var D = this.detectExtension(this.view.href), A = this.scaledInnerDimensions || this.innerDimensions;
        if (this.view.isImage()) {
            var B = this.pixelClone(A);
            this.media.setStyle(B).update(new Element("img", {
                id: "lightviewContent",
                src: this.view.href,
                alt: "",
                galleryimg: "no"
            }).setStyle(B))
        }
        else {
            if (this.view.isExternal()) {
                if (this.scaledInnerDimensions && this.view.options.fullscreen) {
                    A.height -= this.menuBarDimensions.height
                }
                switch (this.view.type) {
                    case "ajax":
                        var F = Object.clone(this.view.options.ajax) || {};
                        var E = function(){
                            this.stopLoading();
                            if (this.view.options.autosize) {
                                this.external.setStyle({
                                    width: "auto",
                                    height: "auto"
                                });
                                this.innerDimensions = this.getHiddenDimensions(this.external)
                            }
                            new Effect.Event({
                                queue: this.queue,
                                afterFinish: this.resizeWithinViewport.bind(this)
                            })
                        }
.bind(this);
                        if (F.onComplete) {
                            F.onComplete = F.onComplete.wrap(function(N, M){
                                E();
                                N(M)
                            })
                        }
                        else {
                            F.onComplete = E
                        }
                        this.startLoading();
                        new Ajax.Updater(this.external, this.view.href, F);
                        break;
                    case "iframe":
                        this.external.update(this.iframe = new Element("iframe", {
                            frameBorder: 0,
                            hspace: 0,
                            src: this.view.href,
                            id: "lightviewContent",
                            name: "lightviewContent",
                            scrolling: (this.view.options && this.view.options.scrolling) ? "auto" : "no"
                        }).setStyle(Object.extend({
                            border: 0,
                            margin: 0,
                            padding: 0
                        }, this.pixelClone(A))));
                        break;
                    case "inline":
                        var C = this.view.href, H = $(C.substr(C.indexOf("#") + 1));
                        if (!H || !H.tagName) {
                            return
                        }
                        var L = new Element(this.view.options.wrapperTag || "div"), G = H.getStyle("visibility"), J = H.getStyle("display");
                        H.wrap(L);
                        H.setStyle({
                            visibility: "hidden"
                        }).show();
                        var I = this.getHiddenDimensions(L);
                        H.setStyle({
                            visibility: G,
                            display: J
                        });
                        L.insert({
                            before: H
                        }).remove();
                        H.insert({
                            before: this.inlineMarker = new Element(H.tagName)
                        });
                        H._inlineDisplayRestore = H.getStyle("display");
                        this.inlineContent = H.show();
                        this.external.update(this.inlineContent);
                        if (this.view.options.autosize) {
                            this.innerDimensions = I;
                            new Effect.Event({
                                queue: this.queue,
                                afterFinish: this.resizeWithinViewport.bind(this)
                            })
                        }
                        break
                }
            }
            else {
                var K = {
                    tag: "object",
                    id: "lightviewContent",
                    width: A.width,
                    height: A.height
                };
                switch (this.view.type) {
                    case "quicktime":
                        Object.extend(K, {
                            pluginspage: this.pluginspages[this.view.type],
                            children: [{
                                tag: "param",
                                name: "autoplay",
                                value: this.view.options.autoplay
                            }, {
                                tag: "param",
                                name: "scale",
                                value: "tofit"
                            }, {
                                tag: "param",
                                name: "controller",
                                value: this.view.options.controls
                            }, {
                                tag: "param",
                                name: "enablejavascript",
                                value: true
                            }, {
                                tag: "param",
                                name: "src",
                                value: this.view.href
                            }, {
                                tag: "param",
                                name: "loop",
                                value: this.view.options.loop || false
                            }]
                        });
                        Object.extend(K, Prototype.Browser.IE ? {
                            codebase: this.codebases[this.view.type],
                            classid: this.classids[this.view.type]
                        } : {
                            data: this.view.href,
                            type: this.mimetypes[this.view.type]
                        });
                        break;
                    case "flash":
                        Object.extend(K, {
                            data: this.view.href,
                            type: this.mimetypes[this.view.type],
                            quality: "high",
                            pluginspage: this.pluginspages[this.view.type],
                            children: [{
                                tag: "param",
                                name: "movie",
                                value: this.view.href
                            }]
                        });
                        if (this.view.options.flashvars) {
                            K.children.push({
                                tag: "param",
                                name: "FlashVars",
                                value: this.view.options.flashvars
                            })
                        }
                        break
                }
                this.media.setStyle(this.pixelClone(A)).show();
                this.media.update(this.createHTML(K));
                if (this.view.isQuicktime() && $("lightviewContent")) {
                    (function(){
                        try {
                            if ("SetControllerVisible" in $("lightviewContent")) {
                                $("lightviewContent").SetControllerVisible(this.view.options.controls)
                            }
                        } 
                        catch (M) {
                        }
                    }
.bind(this)).delay(0.4)
                }
            }
        }
    },
    getHiddenDimensions: function(B){
        B = $(B);
        var A = B.ancestors(), C = [], E = [];
        A.push(B);
        A.each(function(F){
            if (F != B && F.visible()) {
                return
            }
            C.push(F);
            E.push({
                display: F.getStyle("display"),
                position: F.getStyle("position"),
                visibility: F.getStyle("visibility")
            });
            F.setStyle({
                display: "block",
                position: "absolute",
                visibility: "visible"
            })
        });
        var D = {
            width: B.clientWidth,
            height: B.clientHeight
        };
        C.each(function(G, F){
            G.setStyle(E[F])
        });
        return D
    },
    clearContent: function(){
        var A = $("lightviewContent");
        if (A) {
            switch (A.tagName.toLowerCase()) {
                case "object":
                    if (Prototype.Browser.WebKit && this.view.isQuicktime()) {
                        try {
                            A.Stop()
                        } 
                        catch (B) {
                        }
                        A.innerHTML = ""
                    }
                    if (A.parentNode) {
                        A.remove()
                    }
                    else {
                        A = Prototype.emptyFunction
                    }
                    break;
                case "iframe":
                    A.remove();
                    if (Prototype.Browser.Gecko) {
                        delete window.frames.lightviewContent
                    }
                    break;
                default:
                    A.remove();
                    break
            }
        }
    },
    adjustDimensionsToView: function(){
        var A = this.scaledInnerDimensions || this.innerDimensions;
        if (this.view.options.controls) {
            switch (this.view.type) {
                case "quicktime":
                    A.height += 16;
                    break
            }
        }
        this[(this.scaledInnerDimensions ? "scaledI" : "i") + "nnerDimensions"] = A
    },
    afterEffect: function(){
        new Effect.Event({
            queue: this.queue,
            afterFinish: function(){
                this.afterShow()
            }
.bind(this)
        })
    },
    afterShow: function(){
        this.fillMenuBar();
        this.enableKeyboardNavigation();
        if (!this.view.isAjax()) {
            this.stopLoading()
        }
        if (!((this.view.options.autosize && this.view.isInline()) || this.view.isAjax())) {
            this.resizeWithinViewport()
        }
        if (!this.view.isIframe()) {
            new Effect.Event({
                queue: this.queue,
                afterFinish: this.insertContent.bind(this)
            })
        }
    },
    finishShow: function(){
        new Effect.Event({
            queue: this.queue,
            afterFinish: this.showContent.bind(this)
        });
        if (this.view.isIframe()) {
            new Effect.Event({
                delay: 0.15,
                queue: this.queue,
                afterFinish: this.insertContent.bind(this)
            })
        }
        if (this.sliding) {
            new Effect.Event({
                queue: this.queue,
                afterFinish: this.nextSlide.bind(this)
            })
        }
    },
    previous: function(){
        this.show(this.getSurroundingIndexes().previous)
    },
    next: function(){
        this.show(this.getSurroundingIndexes().next)
    },
    resizeWithinViewport: function(){
        this.adjustDimensionsToView();
        var B = this.getInnerDimensions(), D = this.getBounds();
        if (this.options.viewport && (B.width > D.width || B.height > D.height)) {
            if (!this.view.options.fullscreen) {
                var E = Object.clone(this.getOuterDimensions()), A = D, C = Object.clone(E);
                if (C.width > A.width) {
                    C.height *= A.width / C.width;
                    C.width = A.width;
                    if (C.height > A.height) {
                        C.width *= A.height / C.height;
                        C.height = A.height
                    }
                }
                else {
                    if (C.height > A.height) {
                        C.width *= A.height / C.height;
                        C.height = A.height;
                        if (C.width > A.width) {
                            C.height *= A.width / C.width;
                            C.width = A.width
                        }
                    }
                }
                var F = (C.width % 1 > 0 ? C.height / E.height : C.height % 1 > 0 ? C.width / E.width : 1);
                this.scaledInnerDimensions = {
                    width: (this.innerDimensions.width * F).round(),
                    height: (this.innerDimensions.height * F).round()
                };
                this.fillMenuBar();
                B = {
                    width: this.scaledInnerDimensions.width,
                    height: this.scaledInnerDimensions.height + this.menuBarDimensions.height
                }
            }
            else {
                this.scaledInnerDimensions = D;
                this.fillMenuBar();
                B = D
            }
        }
        else {
            this.fillMenuBar();
            this.scaledInnerDimensions = null
        }
        this.resize(B)
    },
    resize: function(B){
        var F = this.lightview.getDimensions(), I = 2 * this.border, D = B.width + I, M = B.height + I;
        this.hidePrevNext();
        var L = function(){
            this.restoreCenter();
            this.resizing = null;
            this.finishShow()
        };
        if (F.width == D && F.height == M) {
            L.bind(this)();
            return
        }
        var C = {
            width: D + "px",
            height: M + "px"
        };
        if (!Prototype.Browser.IE6) {
            Object.extend(C, {
                marginLeft: 0 - D / 2 + "px",
                marginTop: 0 - M / 2 + "px"
            })
        }
        var G = D - F.width, K = M - F.height, J = parseInt(this.lightview.getStyle("marginLeft").replace("px", "")), E = parseInt(this.lightview.getStyle("marginTop").replace("px", ""));
        if (!Prototype.Browser.IE6) {
            var A = (0 - D / 2) - J, H = (0 - M / 2) - E
        }
        this.resizing = new Effect.Tween(this.lightview, 0, 1, {
            duration: this.options.resizeDuration,
            queue: this.queue,
            transition: this.options.transition,
            afterFinish: L.bind(this)
        }, function(Q){
            var N = (F.width + Q * G).toFixed(0), P = (F.height + Q * K).toFixed(0);
            if (Prototype.Browser.IE6) {
                this.lightview.setStyle({
                    width: (F.width + Q * G).toFixed(0) + "px",
                    height: (F.height + Q * K).toFixed(0) + "px"
                });
                this.resizeCenter.setStyle({
                    height: P - 1 * this.border + "px"
                })
            }
            else {
                if (Prototype.Browser.IE) {
                    this.lightview.setStyle({
                        position: "fixed",
                        width: N + "px",
                        height: P + "px",
                        marginLeft: ((0 - N) / 2).round() + "px",
                        marginTop: ((0 - P) / 2).round() + "px"
                    });
                    this.resizeCenter.setStyle({
                        height: P - 1 * this.border + "px"
                    })
                }
                else {
                    var O = document.viewport.getDimensions(), R = document.viewport.getScrollOffsets();
                    this.lightview.setStyle({
                        position: "absolute",
                        marginLeft: 0,
                        marginTop: 0,
                        width: N + "px",
                        height: P + "px",
                        left: (R[0] + (O.width / 2) - (N / 2)).floor() + "px",
                        top: (R[1] + (O.height / 2) - (P / 2)).floor() + "px"
                    });
                    this.resizeCenter.setStyle({
                        height: P - 1 * this.border + "px"
                    })
                }
            }
        }
.bind(this))
    },
    showContent: function(){
        new Effect.Event({
            queue: this.queue,
            afterFinish: Element.show.bind(this, this[this.view.isMedia() ? "media" : "external"])
        });
        new Effect.Event({
            queue: this.queue,
            afterFinish: this.hidePrevNext.bind(this)
        });
        new Effect.Parallel([new Effect.Opacity(this.center, {
            sync: true,
            from: 0,
            to: 1
        }), new Effect.Appear(this.sideButtons, {
            sync: true
        })], {
            queue: this.queue,
            duration: 0.45,
            afterFinish: function(){
                if (this.element) {
                    this.element.fire("lightview:opened")
                }
            }
.bind(this)
        });
        if (this.view.isGallery()) {
            new Effect.Event({
                queue: this.queue,
                afterFinish: this.showPrevNext.bind(this)
            })
        }
    },
    hideContent: function(){
        if (!this.lightview.visible()) {
            return
        }
        new Effect.Parallel([new Effect.Opacity(this.sideButtons, {
            sync: true,
            from: 1,
            to: 0
        }), new Effect.Opacity(this.center, {
            sync: true,
            from: 1,
            to: 0
        })], {
            queue: this.queue,
            duration: 0.35
        });
        new Effect.Event({
            queue: this.queue,
            afterFinish: function(){
                this.media.update("").hide();
                this.external.update("").hide();
                this.clearContent();
                this.topcloseButtonImage.setStyle({
                    marginTop: this.closeDimensions.topclose.height + "px"
                })
            }
.bind(this)
        })
    },
    hideData: function(){
        this.dataText.hide();
        this.title.hide();
        this.caption.hide();
        this.imgNumber.hide();
        this.slideshow.hide()
    },
    fillMenuBar: function(){
        this.hideData();
        if (!this.view.options.menubar) {
            this.menuBarDimensions = {
                width: 0,
                height: 0
            };
            this.closeButtonWidth = 0;
            this.menubar.hide();
            return false
        }
        else {
            this.menubar.show()
        }
        this.menubar[(this.view.isExternal() ? "add" : "remove") + "ClassName"]("lv_MenuTop");
        if (this.view.title || this.view.caption) {
            this.dataText.show()
        }
        if (this.view.title) {
            this.title.update(this.view.title).show()
        }
        if (this.view.caption) {
            this.caption.update(this.view.caption).show()
        }
        if (this.views && this.views.length > 1) {
            this.imgNumber.show().down().update(new Template(this.options.imgNumberTemplate).evaluate({
                position: this.position + 1,
                total: this.views.length
            }));
            if (this.options.slideshow.display) {
                this.slideshow.show();
                this.slideshowButton.show()
            }
        }
        this.setCloseButtons();
        this.setMenuBarDimensions()
    },
    setCloseButtons: function(){
        var E = this.closeDimensions.small.width, D = this.closeDimensions.large.width, G = this.closeDimensions.innertop.width, A = this.scaledInnerDimensions ? this.scaledInnerDimensions.width : this.innerDimensions.width, F = 180, C = 0, B = this.options.borderColor;
        if (this.view.options.topclose) {
            B = null
        }
        else {
            if (!this.view.isMedia()) {
                B = "innertop.jpg";
                C = G
            }
            else {
                if (A >= F + E && A < F + D) {
                    B = "small.jpg";
                    C = E
                }
                else {
                    if (A >= F + D) {
                        B = "large.jpg";
                        C = D
                    }
                }
            }
        }
        if (C > 0) {
            this.closeWrapper.setStyle({
                width: C + "px"
            }).show()
        }
        else {
            this.closeWrapper.hide()
        }
        if (B) {
            this.closeButton.setStyle({
                background: "url(" + this.images + "close_" + B + ")"
            })
        }
        this.closeButtonWidth = C
    },
    startLoading: function(){
        this.loadingEffect = new Effect.Appear(this.loading, {
            duration: 0.3,
            from: 0,
            to: 1,
            queue: this.queue
        })
    },
    stopLoading: function(){
        if (this.loadingEffect) {
            Effect.Queues.get("lightview").remove(this.loadingEffect)
        }
        new Effect.Fade(this.loading, {
            duration: 1,
            queue: this.queue
        })
    },
    setPrevNext: function(){
        if (!this.view.isImage()) {
            return
        }
        var D = (this.options.cyclic || this.position != 0), B = (this.options.cyclic || (this.view.isGallery() && this.getSurroundingIndexes().next != 0));
        this.prevButtonImage[D ? "show" : "hide"]();
        this.nextButtonImage[B ? "show" : "hide"]();
        var C = this.scaledInnerDimensions || this.innerDimensions;
        this.prevnext.setStyle({
            height: C.height + "px"
        });
        var A = ((C.width / 2 - 1) + this.border).floor();
        if (D) {
            this.prevnext.insert(this.prevButton = new Element("div", {
                className: "lv_Button lv_PrevButton"
            }).setStyle({
                width: A + "px"
            }));
            this.prevButton.side = "prev"
        }
        if (B) {
            this.prevnext.insert(this.nextButton = new Element("div", {
                className: "lv_Button lv_NextButton"
            }).setStyle({
                width: A + "px"
            }));
            this.nextButton.side = "next"
        }
        if (D || B) {
            this.prevnext.show()
        }
    },
    showPrevNext: function(){
        if (!this.view.isImage()) {
            return
        }
        this.setPrevNext();
        this.prevnext.show()
    },
    hidePrevNext: function(){
        this.prevnext.update("").hide();
        this.prevButtonImage.hide().setStyle({
            marginLeft: this.sideDimensions.width + "px"
        });
        this.nextButtonImage.hide().setStyle({
            marginLeft: -1 * this.sideDimensions.width + "px"
        })
    },
    appear: function(){
        if (this.lightview.getStyle("opacity") != 0) {
            return
        }
        var A = function(){
            if (!Prototype.Browser.WebKit419) {
                this.lightview.show()
            }
            this.lightview.setOpacity(1)
        }
.bind(this);
        if (this.options.overlay.display) {
            new Effect.Appear(this.overlay, {
                duration: 0.4,
                from: 0,
                to: this.pngOverlay ? 1 : this.options.overlay.opacity,
                queue: this.queue,
                beforeStart: this.maxOverlay.bind(this),
                afterFinish: A
            })
        }
        else {
            A()
        }
    },
    hide: function(){
        if (Prototype.Browser.WebKit419) {
            var A = $$("object#lightviewContent")[0];
            if (A) {
                try {
                    A.Stop()
                } 
                catch (B) {
                }
            }
        }
        if (this.lightview.getStyle("opacity") == 0) {
            return
        }
        this.stopSlideshow();
        this.prevnext.hide();
        this.center.hide();
        if (Effect.Queues.get("lightview_hide").effects.length > 0) {
            return
        }
        Effect.Queues.get("lightview").each(function(C){
            C.cancel()
        });
        new Effect.Event({
            queue: this.queue,
            afterFinish: this.restoreInlineContent.bind(this)
        });
        new Effect.Opacity(this.lightview, {
            duration: 0.1,
            from: 1,
            to: 0,
            queue: {
                position: "end",
                scope: "lightview_hide"
            }
        });
        new Effect.Fade(this.overlay, {
            duration: 0.4,
            queue: {
                position: "end",
                scope: "lightview_hide"
            },
            afterFinish: this.afterHide.bind(this)
        })
    },
    afterHide: function(){
        if (!Prototype.Browser.WebKit419) {
            this.lightview.hide()
        }
        else {
            this.lightview.setStyle({
                marginLeft: "-10000px",
                marginTop: "-10000px"
            })
        }
        this.center.setOpacity(0).show();
        this.prevnext.update("").hide();
        this.media.update("").hide();
        this.external.update("").hide();
        this.disableKeyboardNavigation();
        this.showOverlapping();
        if (this.element) {
            this.element.fire("lightview:hidden")
        }
        this.clearContent();
        this.element = null;
        this.views = null;
        this.view = null;
        this.scaledInnerDimensions = null
    },
    setMenuBarDimensions: function(){
        var B = {}, A = this[(this.scaledInnerDimensions ? "scaledI" : "i") + "nnerDimensions"].width;
        this.menubar.setStyle({
            width: A + "px"
        });
        this.data.setStyle({
            width: A - this.closeButtonWidth - 1 + "px"
        });
        B = this.getHiddenDimensions(this.menubar);
        this.menubar.setStyle({
            width: "100%"
        });
        this.menuBarDimensions = this.view.options.menubar ? B : {
            width: B.width,
            height: 0
        }
    },
    restoreCenter: function(){
        var B = this.lightview.getDimensions();
        if (Prototype.Browser.IE6) {
            this.lightview.setStyle({
                top: "50%",
                left: "50%"
            })
        }
        else {
            if (Prototype.Browser.WebKit419 || Prototype.Browser.Gecko) {
                var A = document.viewport.getDimensions(), C = document.viewport.getScrollOffsets();
                this.lightview.setStyle({
                    marginLeft: 0,
                    marginTop: 0,
                    left: (C[0] + (A.width / 2) - (B.width / 2)).floor() + "px",
                    top: (C[1] + (A.height / 2) - (B.height / 2)).floor() + "px"
                })
            }
            else {
                this.lightview.setStyle({
                    position: "fixed",
                    left: "50%",
                    top: "50%",
                    marginLeft: (0 - B.width / 2).round() + "px",
                    marginTop: (0 - B.height / 2).round() + "px"
                })
            }
        }
    },
    startSlideshow: function(){
        this.stopSlideshow();
        this.sliding = true;
        this.next.bind(this).delay(0.25);
        this.slideshowButton.setStyle({
            background: "url(" + this.images + "slideshow_stop.jpg) top left no-repeat"
        }).hide()
    },
    stopSlideshow: function(){
        if (this.sliding) {
            this.sliding = false
        }
        if (this.slideTimer) {
            clearTimeout(this.slideTimer)
        }
        this.slideshowButton.setStyle({
            background: "url(" + this.images + "slideshow_play.jpg) top left no-repeat"
        })
    },
    toggleSlideshow: function(){
        this[(this.sliding ? "stop" : "start") + "Slideshow"]()
    },
    nextSlide: function(){
        if (this.sliding) {
            this.slideTimer = this.next.bind(this).delay(this.options.slideshow.delay)
        }
    },
    updateViews: function(){
        this.sets = [];
        var A = $$("a[class^=lightview]");
        A.each(function(B){
            B.stopObserving();
            new Lightview.View(B);
            B.observe("click", this.show.curry(B).wrap(function(E, D){
                D.stop();
                E(D)
            }).bindAsEventListener(this));
            if (B._view.isImage()) {
                if (this.options.preloadHover) {
                    B.observe("mouseover", this.preloadImageHover.bind(this, B._view))
                }
                var C = A.partition(function(D){
                    return D.rel == B.rel
                });
                if (C[0].length) {
                    this.sets.push({
                        rel: B._view.rel,
                        elements: C[0]
                    });
                    A = C[1]
                }
            }
        }
.bind(this))
    },
    getSet: function(A){
        return this.sets.find(function(B){
            return B.rel == A
        })
    },
    getViews: function(A){
        return this.getSet(A).elements.pluck("_view")
    },
    addObservers: function(){
        if (this.options.overlay.close) {
            $(document.body).observe("click", this.bodyClick.bindAsEventListener(this))
        }
        $w("mouseover mouseout").each(function(C){
            this.prevnext.observe(C, function(D){
                var E = D.findElement("div");
                if (!E) {
                    return
                }
                if (this.prevButton && this.prevButton == E || this.nextButton && this.nextButton == E) {
                    this.toggleSideButton(D)
                }
            }
.bindAsEventListener(this))
        }
.bind(this));
        this.prevnext.observe("click", function(D){
            var E = D.findElement("div");
            if (!E) {
                return
            }
            var C = (this.prevButton && this.prevButton == E) ? "previous" : (this.nextButton && this.nextButton == E) ? "next" : null;
            if (C) {
                this[C].wrap(function(G, F){
                    this.stopSlideshow();
                    G(F)
                }).bind(this)()
            }
        }
.bindAsEventListener(this));
        $w("prev next").each(function(C){
            this[C + "ButtonImage"].observe("mouseover", this.toggleSideButton.bindAsEventListener(this)).observe("mouseout", this.toggleSideButton.bindAsEventListener(this)).observe("click", this[C == "next" ? C : "previous"].wrap(function(E, D){
                this.stopSlideshow();
                E(D)
            }).bindAsEventListener(this))
        }
.bind(this));
        var B = this.container.select("a.lv_Button");
        if (!Prototype.Browser.WebKit419) {
            B.each(function(C){
                C.observe("mouseover", Element.setOpacity.bind(this, C, this.options.buttons.opacity.hover)).observe("mouseout", Element.setOpacity.bind(this, C, this.options.buttons.opacity.normal))
            }
.bind(this))
        }
        else {
            B.invoke("setOpacity", 1)
        }
        this.closeButton.observe("click", this.hide.bindAsEventListener(this));
        this.slideshowButton.observe("click", this.toggleSlideshow.bindAsEventListener(this));
        if (Prototype.Browser.WebKit419 || Prototype.Browser.Gecko) {
            var A = function(D, C){
                if (this.lightview.getStyle("top").charAt(0) == "-") {
                    return
                }
                D(C)
            };
            Event.observe(window, "scroll", this.restoreCenter.wrap(A).bindAsEventListener(this));
            Event.observe(window, "resize", this.restoreCenter.wrap(A).bindAsEventListener(this))
        }
        if (Prototype.Browser.Gecko) {
            Event.observe(window, "resize", this.maxOverlay.bindAsEventListener(this))
        }
        this.lightview.observe("mouseover", this.toggleTopClose.bindAsEventListener(this)).observe("mouseout", this.toggleTopClose.bindAsEventListener(this));
        this.topcloseButtonImage.observe("mouseover", this.toggleTopClose.bindAsEventListener(this)).observe("mouseout", this.toggleTopClose.bindAsEventListener(this)).observe("click", this.hide.bindAsEventListener(this))
    },
    toggleTopClose: function(C){
        var B = C.type;
        if (!this.view) {
            B = "mouseout"
        }
        else {
            if (!(this.view && this.view.options && this.view.options.topclose && (this.center.getOpacity() == 1))) {
                return
            }
        }
        if (this.topCloseEffect) {
            Effect.Queues.get("lightview_topCloseEffect").remove(this.topCloseEffect)
        }
        var A = {
            marginTop: ((B == "mouseover") ? 0 : this.closeDimensions.topclose.height) + "px"
        };
        this.topCloseEffect = new Effect.Morph(this.topcloseButtonImage, {
            style: A,
            duration: 0.2,
            queue: {
                scope: "lightview_topCloseEffect",
                limit: 1
            },
            delay: (B == "mouseout" ? 0.3 : 0)
        })
    },
    getScrollDimensions: function(){
        var A = {};
        $w("width height").each(function(E){
            var C = E.capitalize();
            var B = document.documentElement;
            A[E] = Prototype.Browser.IE ? [B["offset" + C], B["scroll" + C]].max() : Prototype.Browser.WebKit ? document.body["scroll" + C] : B["scroll" + C]
        });
        return A
    },
    maxOverlay: function(){
        if (!Prototype.Browser.Gecko) {
            return
        }
        this.overlay.setStyle(this.pixelClone(document.viewport.getDimensions()));
        this.overlay.setStyle(this.pixelClone(this.getScrollDimensions()))
    },
    bodyClick: function(A){
        if (A.target && (A.target == this.overlay || A.target == this.topButtons || A.target == this.loadingButton)) {
            this.hide()
        }
    },
    toggleSideButton: function(E){
        var C = E.target, B = C.side, A = this.sideDimensions.width, F = (E.type == "mouseover") ? 0 : B == "prev" ? A : -1 * A, D = {
            marginLeft: F + "px"
        };
        if (!this.sideEffect) {
            this.sideEffect = {}
        }
        if (this.sideEffect[B]) {
            Effect.Queues.get("lightview_side" + B).remove(this.sideEffect[B])
        }
        this.sideEffect[B] = new Effect.Morph(this[B + "ButtonImage"], {
            style: D,
            duration: 0.2,
            queue: {
                scope: "lightview_side" + B,
                limit: 1
            },
            delay: (E.type == "mouseout" ? 0.1 : 0)
        })
    },
    getSurroundingIndexes: function(){
        if (!this.views) {
            return
        }
        var D = this.position, C = this.views.length;
        var B = (D <= 0) ? C - 1 : D - 1, A = (D >= C - 1) ? 0 : D + 1;
        return {
            previous: B,
            next: A
        }
    },
    createCorner: function(F, G){
        var B = this.radius, E = this.border, D = new Element("canvas", {
            id: "corner" + G,
            width: E + "px",
            height: E + "px"
        }), A = {
            top: (G.charAt(0) == "t"),
            left: (G.charAt(1) == "l")
        };
        if (D && D.getContext && D.getContext("2d")) {
            F.insert(D);
            var C = D.getContext("2d");
            C.fillStyle = this.options.backgroundColor;
            C.arc((A.left ? B : E - B), (A.top ? B : E - B), B, 0, Math.PI * 2, true);
            C.fill();
            C.fillRect((A.left ? B : 0), 0, E - B, E);
            C.fillRect(0, (A.top ? B : 0), E, E - B)
        }
        else {
            F.insert(new Element("div").setStyle({
                width: E + "px",
                height: E + "px",
                margin: 0,
                padding: 0,
                display: "block",
                position: "relative",
                overflow: "hidden"
            }).insert(new Element("v:roundrect", {
                fillcolor: this.options.backgroundColor,
                strokeWeight: "1px",
                strokeColor: this.options.backgroundColor,
                arcSize: (B / E * 0.5).toFixed(2)
            }).setStyle({
                width: 2 * E - 1 + "px",
                height: 2 * E - 1 + "px",
                position: "absolute",
                left: (A.left ? 0 : (-1 * E)) + "px",
                top: (A.top ? 0 : (-1 * E)) + "px"
            })))
        }
    },
    hideOverlapping: function(){
        if (this.preventingOverlap) {
            return
        }
        $$("select", "embed", "object").invoke("setStyle", {
            visibility: "hidden"
        });
        this.preventingOverlap = true
    },
    showOverlapping: function(){
        $$("select", "embed", "object").invoke("setStyle", {
            visibility: "visible"
        });
        this.preventingOverlap = false
    },
    pixelClone: function(A){
        var B = {};
        Object.keys(A).each(function(C){
            B[C] = A[C] + "px"
        });
        return B
    },
    getInnerDimensions: function(){
        return {
            width: this.innerDimensions.width,
            height: this.innerDimensions.height + this.menuBarDimensions.height
        }
    },
    getOuterDimensions: function(){
        var B = this.getInnerDimensions(), A = 2 * this.border;
        return {
            width: B.width + A,
            height: B.height + A
        }
    },
    getBounds: function(){
        var C = 20, A = 2 * this.sideDimensions.height + C, B = document.viewport.getDimensions();
        return {
            width: B.width - A,
            height: B.height - A
        }
    }
});
Object.extend(Lightview, {
    enableKeyboardNavigation: function(){
        this.keyboardEvent = this.keyboardDown.bindAsEventListener(this);
        document.observe("keydown", this.keyboardEvent)
    },
    disableKeyboardNavigation: function(){
        if (this.keyboardEvent) {
            document.stopObserving("keydown", this.keyboardEvent)
        }
    },
    keyboardDown: function(C){
        var B = String.fromCharCode(C.keyCode).toLowerCase(), E = C.keyCode, F = this.view.isGallery() && !this.resizing, A = this.options.slideshow.display, D;
        if (this.view.isMedia()) {
            C.stop();
            D = (E == Event.KEY_ESC || ["x", "c"].member(B)) ? "hide" : (E == 37 && F && (this.options.cyclic || this.position != 0)) ? "previous" : (E == 39 && F && (this.options.cyclic || this.getSurroundingIndexes().next != 0)) ? "next" : (B == "p" && A && this.view.isGallery()) ? "startSlideshow" : (B == "s" && A && this.view.isGallery()) ? "stopSlideshow" : null;
            if (B != "s") {
                this.stopSlideshow()
            }
        }
        else {
            D = (E == Event.KEY_ESC) ? "hide" : null
        }
        if (D) {
            this[D]()
        }
        if (F) {
            if (E == Event.KEY_HOME && this.views.first() != this.view) {
                this.show(this.views.first())
            }
            if (E == Event.KEY_END && this.views.last() != this.view) {
                this.show(this.views.last())
            }
        }
    }
});
Object.extend(Lightview, {
    preloadSurroundingImages: function(){
        if (this.views.length == 0) {
            return
        }
        var A = this.getSurroundingIndexes();
        this.preloadFromSet([A.next, A.previous])
    },
    preloadFromSet: function(C){
        var A = (this.views && this.views.member(C) || Object.isArray(C)) ? this.views : C.rel ? this.getViews(C.rel) : null;
        if (!A) {
            return
        }
        var B = $A(Object.isNumber(C) ? [C] : C.type ? [A.indexOf(C)] : C).uniq();
        B.each(function(F){
            var D = A[F], E = D.href;
            if (D.preloadedDimensions || D.isPreloading || !E) {
                return
            }
            var G = new Image();
            G.onload = function(){
                G.onload = Prototype.emptyFunction;
                D.isPreloading = null;
                this.setPreloadedDimensions(D, G)
            }
.bind(this);
            G.src = E
        }
.bind(this))
    },
    setPreloadedDimensions: function(A, B){
        A.preloadedDimensions = {
            width: B.width,
            height: B.height
        }
    },
    preloadImageHover: function(A){
        if (A.preloadedDimensions || A.isPreloading) {
            return
        }
        this.preloadFromSet(A)
    }
});
Object.extend(Lightview, {
    detectType: function(A){
        var B;
        $w("flash image iframe quicktime").each(function(C){
            if (new RegExp("\\.(" + this.typeExtensions[C].replace(/\s+/g, "|") + ")(\\?.*)?", "i").test(A)) {
                B = C
            }
        }
.bind(this));
        if (B) {
            return B
        }
        if (A.startsWith("#")) {
            return "inline"
        }
        if (document.domain && document.domain != (A).replace(/(^.*\/\/)|(:.*)|(\/.*)/g, "")) {
            return "iframe"
        }
        return "image"
    },
    detectExtension: function(A){
        var B = A.gsub(/\?.*/, "").match(/\.([^.]{3,4})$/);
        return B ? B[1] : null
    },
    createHTML: function(B){
        var C = "<" + B.tag;
        for (var A in B) {
            if (!["children", "html", "tag"].member(A)) {
                C += " " + A + '="' + B[A] + '"'
            }
        }
        if (new RegExp("^(?:area|base|basefont|br|col|frame|hr|img|input|link|isindex|meta|param|range|spacer|wbr)$", "i").test(B.tag)) {
            C += "/>"
        }
        else {
            C += ">";
            if (B.children) {
                B.children.each(function(D){
                    C += this.createHTML(D)
                }
.bind(this))
            }
            if (B.html) {
                C += B.html
            }
            C += "</" + B.tag + ">"
        }
        return C
    }
});
(function(){
    document.observe("dom:loaded", function(){
        var B = (navigator.plugins && navigator.plugins.length), A = function(D){
            var C = false;
            if (B) {
                C = ($A(navigator.plugins).pluck("name").join(",").indexOf(D) >= 0)
            }
            else {
                try {
                    C = new ActiveXObject(D)
                } 
                catch (E) {
                }
            }
            return !!C
        };
        window.Lightview.Plugin = (B) ? {
            flash: A("Shockwave Flash"),
            quicktime: A("QuickTime")
        } : {
            flash: A("ShockwaveFlash.ShockwaveFlash"),
            quicktime: A("QuickTime.QuickTime")
        }
    })
})();
Lightview.View = Class.create({
    initialize: function(b){
        var c = Object.isElement(b);
        if (c && !b._view) {
            b._view = this;
            if (b.title) {
                b._view._title = b.title;
                if (Lightview.options.removeTitles) {
                    b.title = ""
                }
            }
        }
        this.href = c ? b.getAttribute("href") : b.href;
        if (this.href.indexOf("#") >= 0) {
            this.href = this.href.substr(this.href.indexOf("#"))
        }
        if (b.rel && b.rel.startsWith("gallery")) {
            this.type = "gallery";
            this.rel = b.rel
        }
        else {
            if (b.rel) {
                this.type = b.rel;
                this.rel = b.rel
            }
            else {
                this.type = Lightview.detectType(this.href);
                this.rel = this.type
            }
        }
        $w("ajax flash gallery iframe image inline quicktime external media").each(function(a){
            var T = a.capitalize(), t = a.toLowerCase();
            if ("image gallery media external".indexOf(a) < 0) {
                this["is" + T] = function(){
                    return this.type == t
                }
.bind(this)
            }
        }
.bind(this));
        if (c && b._view._title) {
            var d = b._view._title.split(Lightview.options.titleSplit).invoke("strip");
            if (d[0]) {
                this.title = d[0]
            }
            if (d[1]) {
                this.caption = d[1]
            }
            var e = d[2];
            this.options = (e && Object.isString(e)) ? eval("({" + e + "})") : {}
        }
        else {
            this.title = b.title;
            this.caption = b.caption;
            this.options = b.options || {}
        }
        if (this.options.ajaxOptions) {
            this.options.ajax = Object.clone(this.options.ajaxOptions);
            delete this.options.ajaxOptions
        }
    },
    isGallery: function(){
        return this.type.startsWith("gallery")
    },
    isImage: function(){
        return (this.isGallery() || this.type == "image")
    },
    isExternal: function(){
        return "iframe inline ajax".indexOf(this.type) >= 0
    },
    isMedia: function(){
        return !this.isExternal()
    },
    isVideo: function(){
        return "quicktime".indexOf(this.type) >= -1
    }
});
Lightview.load();
document.observe("dom:loaded", Lightview.start.bind(Lightview));
